<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class BaseRequest extends FormRequest
{
    /**
     * @var 当前表单验证使用的规则
     */
    protected $useRules = [];

    // 各种验证规则的错误提示，当你子类里面添加了新的规则这里也需要加上，或者在子类复写该变量
    protected $errorMsg = [
        'required' => '为必填项',
        'min'      => '最小为:min',
        'max'      => '最大为:max',
        'between'  => '长度在:min和:max之间',
        'integer'  => '必须为整数',
        'string'   => '必须为字符串',
        'regex'    => '格式错误',
        'unique'   => '已存在',
        'present'  => '字段值可以为空但是必传',
        'array'    => '必须是数组格式',
        'json'     => '不是有效的json格式',
    ];

    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * messages 返回给前台的错误信息转换成自定义提示，默认提示是英文
     * @return array
     */
    public function messages()
    {

        $array = [];

        foreach ($this->useRules as $key => $value) {
            // 获取单个字段的多个验证规则
            if (!is_array($value))
                $new_arr = explode('|', $value);
            else
                $new_arr = $value;

            foreach ($new_arr as $k => $v) {
                // 获取单个规则的前部分
                $v = array_first(explode(':', $v));
                //empty($this->useAttributes[$this->$key])?$this->$key:$this->useAttributes[$this->$key].":" . $this->errorMsg[$v];
                // 最终得到每个字段对应的规则返回消息

                $array[$key . '.' . $v] = $key.":" . $this->errorMsg[$v];
            }
        }
        return $array;
    }

}
